# -*- coding: utf-8 -*- 
#处理*.sublime-package打包的主题（默认的主题文件）
# @Title     : ST3字体主题设置
# @Date      : 2014.4.20
# @Author    : aaron(583643865@qq.com)
# @Version   : V1.0



import zipfile
import os 
import re

class GetList:
	def __init__(self,path):
		#安装目录
		self.installDir=path
		#主题压缩文件路径
		self.colorZip=self.installDir+"\\Packages\\Color Scheme - Default.sublime-package"
		#用户自己安装的主题目录
		self.userTheme=self.installDir+"\\Data\\Packages"
		#主题字典 主题名=>路径(packages+...)
		self.themeList={}

		try:
			self.getZipTheme()
		except IOError:
			pass
		self.getUserOwnTheme(self.installDir)

	#获取*.sublime-package中的主题文件，构造成字典，形成 主题名=>路径 的形式
	def getZipTheme(self):
		f=zipfile.ZipFile(self.colorZip)
		theme=f.namelist()
		for x in theme:
			y=x[:-8]
			self.themeList[y]="Packages/Color Scheme - Default/"+x	

		f.close()
		#for x in self.themeList:
		#	print "%s ==> %s"%(x,self.themeList[x])
	
	#获取用户目录下的主题，首先遍历user目录，找到*.tmTheme主题文件
	def getUserOwnTheme(self,path): 
		#递归遍历文件目录
		for x in os.listdir(path):
			sub=path
			sub+="\\"+x
			if os.path.isdir(sub):
				self.getUserOwnTheme(sub)
			elif re.search(r'\.tmTheme$',sub):  #如果为主题文件，就建立 键-值对，保存。
				xdir=os.path.dirname(sub)
				y=x[:-8]
				#格式化为sublime配置的主题格式
				self.themeList[y]=xdir.replace(self.userTheme+"\\",r"Packages/")+r"/"+x

if __name__ == '__main__':
	theme=GetList("D:\\program files\\sublime text\\Sublime Text3")
	theme.getZipTheme()
	theme.getUserOwnTheme(theme.userTheme)